package com.alibaba.excel.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.alibaba.excel.converters.AutoConverter;
import com.alibaba.excel.converters.Converter;

/**
 * @author jipengfei
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface ExcelProperty {

    /**
     * The name of the sheet header.
     *
     * <p>
     * write: It automatically merges when you have more than one head
     * <p>
     * read: When you have multiple heads, take the last one
     *
     * @return The name of the sheet header
     */
    // 工作表标题的名称。
    // 写：当你有多个头时它会自动合并
    // 读：当你有多个头时，取最后一个
    //
    // 回报：
    // 工作表标题的名称
    String[] value() default {""};

    /**
     * Index of column
     *
     * Read or write it on the index of column, If it's equal to -1, it's sorted by Java class.
     *
     * priority: index &gt; order &gt; default sort
     *
     * @return Index of column
     */
    // 列索引 读取或写入列索引，如果等于-1，则按Java类排序。优先级：索引 > 顺序 > 默认排序
    //
    // 回报：
    // 列索引
    int index() default -1;

    /**
     * Defines the sort order for an column.
     *
     * priority: index &gt; order &gt; default sort
     *
     * @return Order of column
     */
    // 定义列的排序顺序。优先级：索引 > 顺序 > 默认排序
    //
    // 回报：
    // 列顺序
    int order() default Integer.MAX_VALUE;

    /**
     * Force the current field to use this converter.
     *
     * @return Converter
     */
    // 强制当前字段使用此转换器。
    //
    // 回报：
    // 转换器
    Class<? extends Converter<?>> converter() default AutoConverter.class;

    /**
     *
     * default @see com.alibaba.excel.util.TypeUtil if default is not meet you can set format
     *
     * @return Format string
     * @deprecated please use {@link com.alibaba.excel.annotation.format.DateTimeFormat}
     */
    // 默认@see com.alibaba.excel.util.TypeUtil 如果默认不满足可以设置格式
    //
    // 已弃用
    // 请使用com.alibaba.excel.annotation.format.DateTimeFormat
    // 回报：
    // 格式化字符串
    @Deprecated
    String format() default "";
}
